﻿#ifndef CREATEWFVIEWDLL_H
#define CREATEWFVIEWDLL_H

#include <QtCore>
#if defined(CREATEMYDLL_LIBRARY)
#  define CREATEMYDLLSHARED_EXPORT Q_DECL_EXPORT
#else
#  define CREATEMYDLLSHARED_EXPORT Q_DECL_IMPORT
#endif

#include "string.h"

#include "TABLEDEF.h"
#include "DATATYPE.h"
#include "DATATYPE_S.h"
QT_BEGIN_NAMESPACE
class QWidget;
class QString;
class QMenuBar;
class QToolBar;
class QMainWindow;
QT_END_NAMESPACE


class CREATEMYDLLSHARED_EXPORT GraphHelper
{
public:
  virtual ~GraphHelper() { /* nothing */ }

   /*  函数:   quit_wf
   用途:   要求画面退出五防，直接切到监控视图
   输入:
   返回:
   */
    virtual bool quit_wf() = 0;

	/*  函数:   show_hide_wfview
	用途:   显示/隐藏五防视图 
	输入:
	返回:
	*/
	virtual void show_hide_wfview(bool bshow) = 0;

	/*  函数:   show_hide_czpview
	用途:   显示/隐藏五操作票视图
	输入:
	返回:
	*/
	virtual void show_hide_czpview(bool bshow) = 0;

	/*  函数:   into_wf_devstate_preset
	用途:   进入/退出五防置位状态 
	输入:
	返回:   
	*/
	virtual void into_wf_devstate_preset(bool bin) = 0;

	/*  函数:   show_wf_graph_layer
	用途:   显示/隐藏五防平面图元 
	输入:
	返回:   
	*/
	virtual void show_wf_graph_layer(bool bshowwfplane) = 0;

	/*  函数:   show_wf_lock_info
	用途:   是否显示五防图元详细信息 
	输入:
	返回:   
	*/
	virtual void show_wf_lock_info(bool bshowLockinfo) = 0;

	/*  函数:   czp_call
	用途:   操作票DLL ->画面->五防视图DLL 
	输入:
	返回:   
	*/
	virtual void czp_call(int db_type,int ticket_id) = 0;

};

class CREATEMYDLLSHARED_EXPORT CreateWFViewDll
{
public:
    CreateWFViewDll();
    QWidget* m_pdlg;
    
public:
	/*  函数:   initWFDll
	用途:   动态库初始化
	输入:
	返回:   1：成功 0：失败
	*/
	int init_WFDll(QMainWindow* parent_main=NULL,QMenuBar* parent_menu_bar=NULL,QToolBar* parent_tool_bar=NULL, GraphHelper *pGraphHelper=NULL);

	/*  函数:   initWFDll
	用途:   动态库析构
	输入:
	返回:   
	*/
	void Fini_WFDll();

	/*  函数:   Graph_Call_wf_Moni
	用途:   画面五防操作图元响应函数
	输入:
	返回:   
	*/
	void Graph_Call_wf_Moni(DATA_LINK db_link);

	/*  函数:   Graph_Call_wf_Prompt
	用途:   画面五防提示项响应函数
	输入:
	返回:
	*/
	void Graph_Call_wf_Prompt(QString sPrompt);


	/*  函数:   Is_exist_unfill_wf_ticket
	用途:   画面退出五防状态时（隐藏开票窗口时），判断是否存在未处理完的操作票,如果存在，画面弹确认放弃所有操作票询问窗，如果确认
	继续调用clear_all_exit_ticket（）否则返回。注：析构动态库时先进行以上操作，最后调Fini_WFDll();
	输入:
	返回:   
	*/
	bool Is_exist_unfill_wf_ticket();


	/*  函数:   clear_all_exit_ticket
	用途:   放弃所有存在未处理完的操作票
	输入:
	返回:   
	*/
	bool clear_all_exit_ticket();


	/*  函数:   showMenuWF
	用途:   显示或隐藏菜单 
	输入:
	返回:   
	*/
	void showMenuWF(bool b);

	/*  函数:   Call_ticket
	用途:   操作票调用（从数据库），操作票DLL->图形画面->五防视图DLL 
	输入:
	返回:   
	*/
	void Call_ticket(int db_type,int ticket_id);

	/*  函数:   Call_zn_ticket
	用途:   智能操作票调用（从智能操作票预存操作票目录），智能操作票DLL->图形画面->五防视图DLL 
	输入:
	返回:   
	*/
	void Call_zn_ticket(QString sTicketname);



};

#endif // CREATEWFVIEWDLL_H
